SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spMigSubServicios] 
@doc int,
@idsAnterior int
AS
SET NOCOUNT ON
declare @ids int
declare @documento int
declare @idss int
declare @curso smallint
declare @turno varchar(1)
declare @modalidad int
declare @modalidadSE int
declare @asignatura int
declare @division varchar(50)
declare @cargo int
declare @sitext varchar(2)
declare @sitlab varchar(2)
declare @Licencia int
declare @enfermedad int
declare @baja bit
declare @falta datetime
declare @fbaja datetime
declare @faltass datetime
declare @zona int
declare @movimiento int
declare @idServicio int
declare @idPlaza int
declare @idsitext int
declare @idsitlab int
declare @nivel varchar(2)
declare @lic_ant int
declare @ids_ant int
declare @mod int
declare @cuise int
declare @horas int
declare @sitrev varchar(2)
declare @resalta varchar(50)
declare @resbaja varchar(50)
declare @idAgente int
declare @normaalta int
declare @normabaja int
declare @tipo varchar(1)
declare @idOrganizacion int
declare @afiliado int
declare @serviciole int
declare @certificada bit

Select @lic_ant = 0

declare s cursor for 
Select ids, documento, idss, curso, turno, modalidad, modalidadSE, asignatura,  division, cargo, sitext, sitlab, licencia, enfermedad, baja, falta, fbaja, faltass, zona, nivel, cuise, horas, sitrev, resalta, resbaja, certificada
from ServiciosPrestados where ids = @idsAnterior and documento = @doc
order by ids, documento, idss, faltass
open s
fetch next from s into @ids, @documento, @idss, @curso, @turno, @modalidad, @modalidadSE, @asignatura, @division, @cargo, @sitext, @sitlab, @licencia, @enfermedad, @baja, @falta, @fbaja, @faltass, @zona, @nivel, @cuise, @horas, @sitrev, @resalta, @resbaja, @certificada
Select @ids_ant = @ids

while @@fetch_status = 0
begin
if (@falta = @faltass)
	Select @movimiento = 1
else
if (@licencia <> 0)
	Select @movimiento = 3
else
if (@licencia = 0) and (@lic_ant <> 0) and (@ids = @ids_ant)
	Select @movimiento = 5 
else
if (@fbaja = (Select max(fbaja) from serviciosprestados where documento = @documento and ids = @ids group by documento, ids))
	Select @movimiento = 2
else
	Select @movimiento = null

Select @idServicio = idServicioAgente from tb_ServiciosAgentes serv, tb_Agentes a where a.documento = left(@documento,len(@documento)-1) and a.idAgente = serv.Agente and @ids = serv.ServicioAnterior

Select @idPlaza = idPlaza from tb_Plazas p, tb_Divisiones d, tb_Turnos t, tb_Organizaciones o where @modalidad = d.grupocarreras and cast(@curso as varchar(2)) = d.curso and @asignatura = p.asignatura and @cargo = p.funcion and (case @turno when '1' then 'I' when '0' then 'I' when 'I' then 'I' else @turno end) = t.mnemo and t.idturno = d.turno and d.division = @division and d.iddivision = p.division and o.cuise = @cuise and o.idOrganizaciones = p.organizacion

Select @idsitlab = idSituacionLaboral from tb_SituacionesLaborales sl where sl.mnemo = @sitlab
Select @idsitext = idSituacionExtraordinaria from tb_SituacionesExtraordinarias se where se.mnemo = @sitext
Select @mod = s.modalidad from tb_Plazas p, tb_SubOrganizaciones s where p.idPlaza = @idPlaza and p.suborganizacion = s.idsubOrganizacion

/*
-- Si es un subservicio LE
if (@idsitlab = 1)
begin
	-- Inserto una licencia en el servicio padre
	insert into tb_SubServiciosAgentesLE(Servicioagente, NroOrden9, Fechaalta, baja, fechabaja, fechatermino,
	movimiento, tramitealta, tramitebaja, normainicio, normafin, plaza, situacionlaboral, situacionextraordinaria,
	nivel, modalidad, zona, licencia, codenfermedad, estadoliqext, Nivelant)
	values(
	@idServicio,
	@idss,
	@faltass, 
	case @baja when 1 then 'S' else 'N' end,
	case @baja when 1 then @fbaja else null end,
	case @baja when 1 then @fbaja else null end,
	@movimiento,
	null,
	null, 
	null,
	null,
	@idPlaza,
	@idsitlab,
	@idsitext,
	null,
	@mod,
	@zona,
	case @licencia when 0 then null else @licencia end,
	case @enfermedad when 0 then null else @enfermedad end,
	4,
	@Nivel)

	Select @idAgente = idAgente from tb_Agentes where documento = left(@documento, len(@documento)-1)
	Select @normaalta = max(idNorma) from tb_Normas where descripcion = @resalta and tipoNorma = 1
	Select @normabaja = max(idNorma) from tb_Normas where descripcion = @resbaja and TipoNorma = 2
	Select @tipo = tipo from TempCargos where codigo = @cargo
	Select @idOrganizacion = idOrganizaciones from tb_Organizaciones org where org.cuise = @cuise
	Select @afiliado = afiliado from Mig..Agentes where documento = @documento

	insert tb_ServiciosAgentesLE (Agente, NroDeOrden9, CargoSalarial, Asignatura, Horas, UbicacionOrig,
	SituacionRevista, FechaAlta, Baja, FechaBaja, FechaTermino, NormaAlta, NormaBaja, CausaAlta, CausaBaja,
	Liquida, TipoDeServicio, Sistema, RegimenLaboral, Financiamiento, Presupuesto, Finalidad, TipoDeFuncion,
	RegimenSalarial, RegimenDesignacion, LegajoSalarial, ClavePSalarial, EstadoLiqExt, Vacante, ServicioLigado,
	ServicioQueSuple, CategoriaTitulo, EstaEnProcesoDeTitularizacion, CuentaAcumulacion, EsIncremHoras, ServicioAnterior)
	values (
	@idAgente,
	1, null, @asignatura, @horas, 
	@idOrganizacion,
	case @sitrev when 'T' then 1 when 'I' then 2 when 'F' then 3 when 'S' then 4 end,
	@Falta,  
	case @baja when 1 then 'S' else 'N' end,
	case @baja when 1 then @fbaja else null end,
	null,
	@normaalta,
	@normabaja,
	null,
	null,
	'S',
	2, 
	1,
	case @tipo when 'C' then 12 else 13 end,
	2,
	case @sitrev when 'T' then 1 when 'I' then 1 else 4 end,
	12,
	12,
	12, 
	null,
	null,
	@afiliado,
	4,
	null,
	null,
	null,
	null,
 	null,
	null,
	null,
	@ids)
	
	Select @Serviciole = @@identity

	--Actualizao servicio ligado en el servicio padre
	update tb_ServiciosAgentesLE set ServicioLigado = @Serviciole where idServicioAgente = @idServicio

	while @sitext <> 'NR'
	begin
		insert into tb_SubServiciosAgentesLE(Servicioagente, NroOrden9, Fechaalta, baja, fechabaja, fechatermino,
		movimiento, tramitealta, tramitebaja, normainicio, normafin, plaza, situacionlaboral, situacionextraordinaria,
		nivel, modalidad, zona, licencia, codenfermedad, estadoliqext, Nivelant)
		values(
		@Serviciole,
		@idss,
		@faltass, 
		case @baja when 1 then 'S' else 'N' end,
		case @baja when 1 then @fbaja else null end,
		case @baja when 1 then @fbaja else null end,
		@movimiento,
		null,
		null, 
		null,
		null,
		@idPlaza,
		@idsitlab,
		@idsitext,
		null,
		@mod,
		@zona,
		case @licencia when 0 then null else @licencia end,
		case @enfermedad when 0 then null else @enfermedad end,
		4,
		@Nivel)
		
		Select @lic_ant = @licencia
		Select @ids_ant = @ids

		fetch next from s into @ids, @documento, @idss, @curso, @turno, @modalidad, @modalidadSE, @asignatura, @division, @cargo, @sitext, @sitlab, @licencia, @enfermedad, @baja, @falta, @fbaja, @faltass, @zona, @nivel, @cuise, @horas, @sitrev, @resalta, @resbaja, @certificada

	end

end
else

begin*/

insert into tb_SubServiciosAgentes(Servicioagente, NroOrden9, Fechaalta, baja, fechabaja, fechatermino,
movimiento, tramitealta, tramitebaja, normainicio, normafin, plaza, situacionlaboral, situacionextraordinaria,
nivel, modalidad, zona, licencia, codenfermedad, estadoliqext, Nivelant)
values(
@idServicio,
@idss,
@faltass, 
case @baja when 1 then 'S' else 'N' end,
case @baja when 1 then @fbaja else null end,
case @baja when 1 then @fbaja else null end,
@movimiento,
null,
null, 
null,
null,
@idPlaza,
@idsitlab,
@idsitext,
null,
@mod,
@zona,
case @licencia when 0 then null else @licencia end,
case @enfermedad when 0 then null else @enfermedad end,
4,
1500)

Select @lic_ant = @licencia
Select @ids_ant = @ids

fetch next from s into @ids, @documento, @idss, @curso, @turno, @modalidad, @modalidadSE, @asignatura, @division, @cargo, @sitext, @sitlab, @licencia, @enfermedad, @baja, @falta, @fbaja, @faltass, @zona, @nivel, @cuise, @horas, @sitrev, @resalta, @resbaja, @certificada

end
--end

close s
deallocate s
GO
